#include "page.h"

extern TFT_eSPI mytft;
Menu_UI::Menu_UI(uint8_t _font, String _topic, String* _select, uint8_t _len, uint16_t _fc, uint16_t _bgc)
{
    font = _font;
    topic = _topic;
    select = _select;
    len = _len;
    fc = _fc;
    bgc = _bgc;
}
void Menu_UI::showPage()
{
    mytft.fillScreen(TFT_WHITE);
    mytft.setTextFont(2);
    mytft.setTextColor(fc, bgc, true);
    mytft.setTextDatum(TC_DATUM);
    mytft.fillRect(0, 0, 128, 32, bgc);
    mytft.drawString(topic, 63, 7);
    mytft.setTextColor(bgc, fc, true);
    mytft.setTextDatum(TL_DATUM);
    for(uint8_t i = 0; i < len; i++)
    {
        mytft.drawString(*(select+i), 16, 34 + i*18);
    }
}

Page_UI::Page_UI(uint8_t _font, String _topic, String _imgUrl, uint16_t _fc, uint16_t _bgc)
{
    font = _font;
    topic = _topic;
    imgUrl = _imgUrl;
    fc = _fc;
    bgc = _bgc;
    
}
void Page_UI::showPage()
{
    mytft.fillScreen(bgc); //背景色刷屏
    mytft.setTextFont(font);
    mytft.setTextSize(2); 
    //底部导航栏
    mytft.setTextDatum(TC_DATUM);
    mytft.fillRect(0, 128, 128, 32, TFT_WHITE);
    mytft.setTextColor(TFT_BLACK, TFT_WHITE, true); 
    mytft.drawString("<       >", 65, 128);
    //**  画图片 未实现  **//
    
    //画字
    mytft.setTextColor(fc, bgc, true); 
    mytft.drawString(topic, 65, 94);
}
/*** 使用demo ***/
/*
// 刷新屏幕
void xTaskOne(void* xTask1)
{
  while(1)
  {
    // if(changePage)
    // {
    //   ui_pages[nowpage].showPage();
    //   sclen = ui_pages[nowpage].len;
    //   cursor = 0;
    //   changePage = false;
    // }
    // for(int i = 0; i < sclen; i++)
    // {
    //   mytft.setCursor(5, rowsor[i]);
    //   if(cursor == i)
    //   {
    //     mytft.print(">"); 
    //   }else{
    //     mytft.print(' ');
    //   }
    // }
    if(changePage)
    {
      pages[nowPage].showPage();
      changePage = false;
    }
    vTaskDelay(50 / portTICK_PERIOD_MS); // 等待1秒
  }
}
// 按键扫描
void xTaskTwo(void* xTask2)
{
  while(1)
  {
    char key = keypad.getKey();
      if(key != NO_KEY)
      {
          Serial.printf("按下了： %c  !\r\n", key);
          switch (key)
          {
          case '2': //cursor--
            //cursor <= 0 ? cursor = sclen-1 : cursor--;
            break;
          case '4':
            nowPage <= 0 ? nowPage = pageNum-1 : nowPage--;
            changePage = true;
            break;
          case '5':
            //gotoPage();
            break;
          case '6':
            nowPage >= pageNum-1 ? nowPage = 0 : nowPage++;
            changePage = true;
            break;
          case '8':
            //cursor >= sclen-1 ? cursor = 0 : cursor++;
          default:
            break;
          }
      }
    vTaskDelay(50 / portTICK_PERIOD_MS);
  }
}
*/
// extern int nowpage;
// extern int cursor;
// extern bool changePage;
// void gotoPage()
// {
//   if(!nowpage)
//   {
//     switch (cursor)
//     {
//     case 0:
//       nowpage = 1;
//       changePage = true;
//       break;
//     case 1:
//       nowpage = 2;
//       changePage = true;
//       break;
//     case 2:
//       nowpage = 3;
//       changePage = true;
//       break;
//     default:
//       break;
//     }
//   }else{
//     nowpage = 0;
//     changePage = true;
//   }
// }